/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package rpg.view;

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import rpg.narrativa.Narrativa;
import rpg.personagem.Mensageiro;

/**
 * paneFinalizar
 *
 * @author Gabriel Bronzatti Moro
 * @since 27/02/2013
 * @version 0.1
 */
public class paneFinalizar extends JPanel {

    private JLabel recebeImagem;
    private JLabel textoFinalizar;
    private JButton btnEnviar;
    private JButton btnCancelar;
    private Container buttons;
    private Narrativa referenciaNarrativa;

    public paneFinalizar(Narrativa narrativa) {
        this.referenciaNarrativa = narrativa;
        this.recebeImagem = new JLabel(new ImageIcon(getClass().getResource("/img/mensagem_icon.png")));

        this.textoFinalizar = new JLabel("Parabéns você chegou no final do jogo, "
                + "para enviar a mensagem ao General por sedex click em enviar...");
        this.btnEnviar = new JButton("Enviar");
        this.btnEnviar.setIcon(new ImageIcon(getClass().getResource("/img/enviar_icon.png")));
        this.btnEnviar.addActionListener(new TrataEnviar());
        this.btnCancelar = new JButton("Cancelar");
        this.btnCancelar.setIcon(new ImageIcon(getClass().getResource("/img/cancel_icon.png")));
        this.btnCancelar.addActionListener(new TrataCancelar());

        setLayout(new FlowLayout());

        this.buttons = new Container();
        this.buttons.setLayout(new GridLayout(1, 2));
        this.buttons.add(this.btnEnviar);
        this.buttons.add(this.btnCancelar);

        add(this.recebeImagem);
        add(this.textoFinalizar);
        add(this.buttons);

        setVisible(true);
    }

    /**
     * Classe privada destinada a implementar a interface listener para que
     * através dela o objeto listener seja registrado nos possíveis eventos...
     * JButtons Classe TrataEnviar é responsável por receber a ação de enviar do
     * usuário, e chamar o método finalizarJogo
     *
     */
    private class TrataEnviar implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            mensagemDeGanhar(referenciaNarrativa.getMensageiro());
            referenciaNarrativa.finalizarJogo(true);
        }
    }

    /**
     * Classe privada destinada a implementar a interface listener para que
     * através dela o objeto listener seja registrado nos possíveis eventos...
     * JButtons Classe TrataCancelar, ação do usuário percebida que significa
     * que o usuário não quis entregar a carta, ou seja, apartir daí é chamado o
     * método finalar jogo da classe narrativa false que dá um game over por
     * usuário não ter entregado a carta.
     */
    private class TrataCancelar implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            mensagemRecursar();
            referenciaNarrativa.finalizarJogo(false);
        }
    }

    /**
     * Informa usuário que o mesmo ganhou
     *
     * @param mensageiro
     */
    private void mensagemDeGanhar(Mensageiro mensageiro) {
        JOptionPane.showMessageDialog(null, "Mensageiro: " + mensageiro.getNome()
                + " você completou sua missão, parabéns você entregou a carta...Jogo finalizado...", "Alerta à usuário",
                JOptionPane.INFORMATION_MESSAGE);
    }

    /**
     * Informa usuário que ao recursar à entrega da carta ele morre
     */
    private void mensagemRecursar() {
        JOptionPane.showMessageDialog(null, "Você recusou-se de entregar sua carta...VocÊ morreu...Game OVer!",
                "Alerta à usuário", JOptionPane.ERROR_MESSAGE);
    }
}
